package com.springboot.demo.service;

import com.springboot.demo.entity.Menu;
import com.springboot.demo.entity.MenuGroup;
import com.springboot.demo.entity.Role;
import com.springboot.demo.entity.User;

import java.util.List;

/**
 * @author wubc683
 * @desc
 * @date 2021-08-26 9:58
 */
public interface RoleService {


    /**
     * 增加权限（管理员）
     * @param implUser
     * @param role
     * @return: java.util.Set<java.lang.String>
     */
    void addRole(User implUser, Role role);

    /**
     * 删除权限（管理员）
     * @param implUser
     * @param id
     * @return: java.util.Set<java.lang.String>
     */
    void deleteRole(User implUser, Long id);

    /**
     * 更新权限（管理员）
     * @param implUser
     * @param role
     * @return: java.util.Set<java.lang.String>
     */
    void updateRole(User implUser, Role role);

    /**
     * 获取权限（管理员）
     * @param implUser
     * @param id
     * @return: java.util.Set<java.lang.String>
     */
    Role getRole(User implUser, Long id);

    /**
     * 查询管理员创建的所有权限
     * @param user
     * @return: java.util.Set<java.lang.String>
     */
    List<Role> getRoles(User user);

//    /**
//     * 创建权限菜单
//     * @param user
//     * @param rid
//     * @param menuGroups
//     * @return: void
//     */
//    void saveRoleMenu(User user, Long rid,List<MenuGroup> menuGroups);

    /**
     * 修改权限菜单
     * @param userInfoById
     * @param id
     * @param menuGroups
     * @return: void
     */
    void updateRoleMenu(User userInfoById, Long id, List<MenuGroup> menuGroups);

//    /**
//     * 获取权限菜单
//     * @param userInfoById
//     * @param rid
//     * @return: java.util.List<com.springboot.demo.entity.Menu>
//     */
//    List<Menu> getRoleMenu(User userInfoById, Long rid);

//    /**
//     * 获取所有功能菜单
//     * @return: java.util.List<com.springboot.demo.entity.Menu>
//     */
//    List<Menu> getAllRoleMenu();

    /**
     * 获取角色对应的菜单组
     * @param user
     * @param rid
     * @return: void
     */
    List<MenuGroup> getRoleMenuGroup(User user, Long rid);
}
